package com.bmslz.monitor.base.util;

import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

public class DateUtil {
    /**
     * 获取上周最后一天的最后一秒时间（LocalDateTime格式）
     * 上周最后一天是周日
     * @return LocalDateTime 表示上周日23:59:59.999999999
     */
    public static LocalDateTime getLastWeekLastDayTime() {
        // 获取当前时间
        LocalDateTime now = LocalDateTime.now();
        // 获取上周的周日
        return now
                .with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY))
                .withHour(23)
                .withMinute(59)
                .withSecond(59)
                .withNano(999999999);
    }

    /**
     * 获取上周最后一天的最后一秒时间（Date格式）
     * @return Date 表示上周日23:59:59.999
     */
    public static Date getLastWeekLastDayDate() {
        LocalDateTime lastWeekLastDayTime = getLastWeekLastDayTime();
        return Date.from(lastWeekLastDayTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * 获取上周最后一天的最后一秒时间（时间戳格式）
     * @return 时间戳（毫秒）
     */
    public static long getLastWeekLastDayTimestamp() {
        return getLastWeekLastDayDate().getTime();
    }

    public static void main(String[] args) {
        System.out.println(getLastWeekLastDayDate().getTime());
    }
}
